package com.wicket.okrapp.biz.service.dto.common;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import javax.validation.constraints.NotNull;
import lombok.Data;
import java.util.Objects;

/**
 * @desc ExecuteCycleStageDto
 * @使用场景
 */
@Data
public class ExecuteCycleStageDto extends BaseDto implements Serializable {

  /**
   * 执行周期阶段ID
   */
  @ApiModelProperty("执行周期阶段ID")
  private String executeCycleStageId;

  /**
   * 关联目标内容ID
   */
  @ApiModelProperty("关联目标内容ID")
  private String relateContentId;

  /**
   * 周期ID
   */
  @ApiModelProperty("周期ID")
  private String cycleId;

  /**
   * 是否父周期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否父周期")
  private String isFatherCycle;

  /**
   * 是否子周期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否子周期")
  private String isSubCycle;

  /**
   * 是否中期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否中期")
  private String isMetaphase;

  /**
   * 是否当前周期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否当前周期")
  private String isCurrentCycle;

  /**
   * 周期名称
   */
  @ApiModelProperty("周期名称")
  private String cycleStandardName;

  /**
   * 评价模板简称
   */
  @ApiModelProperty("评价模板简称")
  private String evaluationTempShortName;

  /**
   * 冗余目标ID
   */
  @ApiModelProperty("冗余目标ID")
  private String targetId;

  /**
   * 评价模板ID
   */
  @ApiModelProperty("评价模板ID")
  private String evaluationTemplateId;
/**
     * 周期类型实例简称 
     */
    @ApiModelProperty("周期类型实例简称")
    private String	 cycleNumberShortName;
/**
     * 周期类型标识 
     */
    @ApiModelProperty("周期类型标识")
    private String	 cycleTypeCode;
/**
     * 是否自定义执行周期阶段 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否自定义执行周期阶段")
    private String	 isDefinedExecuteCycleStage;

    /**
     * 周期开始时间 
     */
    @ApiModelProperty("周期开始时间")
    private Date	 cycleStartTime;

    /**
     * 周期结束时间 
     */
    @ApiModelProperty("周期结束时间")
    private Date	 cycleEndTime;

    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @ApiModelProperty("关联目标内容类型编码")
    private String	 relateContentTypeCode;

    /**
     * 是否过程周期阶段 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否过程周期阶段")
    private String	 isProcessCycleStage;

    /**
     * 排序 
     */
    @ApiModelProperty("排序")
    private Long	 orderNumber;
/**
     * 周期类型配置标识 
     */
    @ApiModelProperty("周期类型配置标识")
    private String	 cycleTypeConfCode;
/**
     * 填报开始时间 
     */
    @ApiModelProperty("填报开始时间")
    private Date	 fillStartTime;
/**
     * 是否父周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否父周期")
    private String	 isParentCycle;
/**
     * 被评对象目标周期ID 
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String	 evaObjTargetCycleId;
/**
     * 关联子周期执行阶段ID 
     */
    @NotNull(message = "关联子周期执行阶段ID不能为空")
@ApiModelProperty("关联子周期执行阶段ID")
    private String	 relateExecuteCycleStageId;

    /**
     * 周期类型实例标识 
     */
    @ApiModelProperty("周期类型实例标识")
    private String	 cycleTypeInstanceCode;

    /**
     * 填报结束时间 
     */
    @NotNull(message = "填报结束时间不能为空")
@ApiModelProperty("填报结束时间")
    private Date	 fillEndtTime;

    /**
     * 评价开始时间 
     */
    @ApiModelProperty("评价开始时间")
    private Date	 evaluateStartTime;

    /**
     * 评价结束时间 
     */
    @ApiModelProperty("评价结束时间")
    private Date	 evaluateEndtTime;

    /**
     * 是否当前子周期（区分规划类型） TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否当前子周期（区分规划类型）")
    private String	 isSameSceneCurrentSubCycle;

    /**
     * 是否下一末级或子周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否下一末级或子周期")
    private String	 isNextCycle;

    /**
     * 是否开始子周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开始子周期")
    private String	 isStartCycle;

    /**
     * 是否截止子周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否截止子周期")
    private String	 isEndCycle;

    /**
     * 是否末级周期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否末级周期不能为空")
@ApiModelProperty("是否末级周期")
    private String	 isLastCycle;

    /**
     * 最近可循环周期类型编码 
     */
    @ApiModelProperty("最近可循环周期类型编码")
    private String	 nextCyclePeriod;

    /**
     * 评价模板创建时间 
     */
    @NotNull(message = "评价模板创建时间不能为空")
@ApiModelProperty("评价模板创建时间")
    private Date	 evaTempCreateTime;
/**
     * 上一执行周期阶段ID 
     */
    @ApiModelProperty("上一执行周期阶段ID")
    private String	 lastExecuteCycleStageId;
/**
     * 归属评价主题ID
     */
    @ApiModelProperty("归属评价主题ID")
    private String	 evaluationSubjectId;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String	 subjectLifeCycle;

    /**
     * 规划类型
     */
    @ApiModelProperty("规划类型")
    private String	 planningType;
/**
     * 目标周期简称 
     */
    @ApiModelProperty("目标周期简称")
    private String	 cyclelAlias;

@Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      ExecuteCycleStageDto that = (ExecuteCycleStageDto) o;
      return  executeCycleStageId == that.executeCycleStageId&&relateContentId == that.relateContentId&&cycleId == that.cycleId&&isFatherCycle == that.isFatherCycle&&isSubCycle == that.isSubCycle&&isMetaphase == that.isMetaphase&&isCurrentCycle == that.isCurrentCycle&&cycleStandardName == that.cycleStandardName&&evaluationTempShortName == that.evaluationTempShortName&&targetId == that.targetId&&evaluationTemplateId == that.evaluationTemplateId&&cycleNumberShortName == that.cycleNumberShortName&&cycleTypeCode == that.cycleTypeCode&&isDefinedExecuteCycleStage == that.isDefinedExecuteCycleStage&&cycleStartTime == that.cycleStartTime&&cycleEndTime == that.cycleEndTime&&relateContentTypeCode == that.relateContentTypeCode&&isProcessCycleStage == that.isProcessCycleStage&&orderNumber == that.orderNumber&&cycleTypeConfCode == that.cycleTypeConfCode&&fillStartTime == that.fillStartTime&&isParentCycle == that.isParentCycle&&evaObjTargetCycleId == that.evaObjTargetCycleId&&relateExecuteCycleStageId == that.relateExecuteCycleStageId&&cycleTypeInstanceCode == that.cycleTypeInstanceCode&&fillEndtTime == that.fillEndtTime&&evaluateStartTime == that.evaluateStartTime&&evaluateEndtTime == that.evaluateEndtTime&&isSameSceneCurrentSubCycle == that.isSameSceneCurrentSubCycle&&isNextCycle == that.isNextCycle&&isStartCycle == that.isStartCycle&&isEndCycle == that.isEndCycle&&isLastCycle == that.isLastCycle&&nextCyclePeriod == that.nextCyclePeriod&&evaTempCreateTime == that.evaTempCreateTime&&lastExecuteCycleStageId == that.lastExecuteCycleStageId&&evaluationSubjectId == that.evaluationSubjectId&&subjectLifeCycle == that.subjectLifeCycle&&planningType == that.planningType&&cyclelAlias == that.cyclelAlias;
    }
@Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), executeCycleStageId,relateContentId,cycleId,isFatherCycle,isSubCycle,isMetaphase,isCurrentCycle,cycleStandardName,evaluationTempShortName,targetId,evaluationTemplateId,cycleNumberShortName,cycleTypeCode,isDefinedExecuteCycleStage,cycleStartTime,cycleEndTime,relateContentTypeCode,isProcessCycleStage,orderNumber,cycleTypeConfCode,fillStartTime,isParentCycle,evaObjTargetCycleId,relateExecuteCycleStageId,cycleTypeInstanceCode,fillEndtTime,evaluateStartTime,evaluateEndtTime,isSameSceneCurrentSubCycle,isNextCycle,isStartCycle,isEndCycle,isLastCycle,nextCyclePeriod,evaTempCreateTime,lastExecuteCycleStageId,evaluationSubjectId,subjectLifeCycle,planningType,cyclelAlias);
    }

}
